package com.clx.chat.service.Impl;

import com.clx.chat.mapper.MessageMapper;
import com.clx.chat.service.MessageService;

import com.clx.common.domain.entity.Message;
import com.clx.common.domain.vo.AjaxResult;
import com.clx.common.utils.DateUtils;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * (Message)表服务实现类
 *
 * @author clx
 * @since 2025-02-23 10:12:39
 */
@Service("messageService")
@RequiredArgsConstructor
public class MessageServiceImpl implements MessageService {

    private final MessageMapper messageMapper;

    /**
     * 查询数据
     *
     * @param id 主键
     * @return 实例对象
     */
    @Override
    public Message selectMessageById(Long id) {
        return messageMapper.selectMessageById(id);
    }

    /**
     * 查询列表
     *
     * @param message 筛选条件
     * @return 查询结果
     */
    @Override
    public List<Message> selectMessageList(Message message) {
        Message entity = message;
        return (messageMapper.selectMessageList(entity));
    }

    /**
     * 新增数据
     *
     * @param message 实例对象
     * @return 受影响的行数，新增成功通常返回1，失败返回0等
     */
    @Override
    public int insertMessage(Message message) {
        Message entity = message;
        entity.setCreateTime(DateUtils.getNowDate());
        return (messageMapper.insertMessage(entity));
    }

    /**
     * 修改数据
     *
     * @param message 实例对象
     * @return 受影响的行数，一般成功修改返回1
     */
    @Override
    public int updateMessage(Message message) {
        Message entity = message;
        entity.setUpdateTime(DateUtils.getNowDate());
        return (messageMapper.updateMessage(entity));
    }

    /**
     * 批量删除数据
     *
     * @param ids 需要删除的主键数组
     * @return 受影响的行数，即成功删除的记录数
     */
    @Override
    public int deleteMessageByIds(Long[] ids) {
        return (messageMapper.deleteMessageByIds(ids));
    }

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功（以受影响行数判断，成功返回1等）
     */
    @Override
    public int deleteMessageById(Long id) {
        return (messageMapper.deleteMessageById(id));
    }


    /**
     * 查询用户所有的聊天记录
     */
    @Override
    public AjaxResult all(Integer userSelf, Integer userOther) {
        List<Message> messages = messageMapper.selectMessageAll(userSelf,userOther);
        return AjaxResult.success(null,messages);
    }
}
